var defaultDataArr=[
    {
      
        id:1,
        title:'.DES加密技术概述与应用',
        content:'一、引言随着信息技术的飞速发展，数据安全已成为'+
                '越来越受到重视的问题。数据加密技术作为保障信息'+
                '安全的核心技术之一，得到了广泛的研究和应用。DES'+
                '（Data Encryption Standard）作为一种对称加密'+
                '算法，凭借其高效、可靠的加密特性，成为了数据加'+
                '密领域的佼佼者。本文将对DES加密技术进行简要概述，'+
                '并分析其优缺点及应用场景。二、DES加密技术简介'+
                'DES加密原理DES加密算法基于密钥对数据进行加密和'+
                '解密，其加密过程包括置换、替换和混淆等操作。具体'+
                '来说，DES算法将64位的明文数据分成两部分，分别进'+
                '行16轮的加密操作，最终输出64位的密文。',
        author:'sys1',        
        userName:'sys1',
        passWord:'111',
        pubulishTime:'2023-11-30 11:00'
    },
    {
        id:2,
        title:'分享一个LCD驱动框架',
        content:'1、最初的代码 在写这篇文章的时候笔者翻看了自己在'+
                '大二时候点的第一块屏幕（TFTLCD，驱动IC为ILI9341'+
                '的代码，看着自己几年前写的代码，思绪仿佛又回到了'+
                '几年的那个夏天…….，咳咳，不好意思有点“触码伤情”了'+
                '，回到正题，当时写的代码最大的问题就是——LCD的应'+
                '用和驱动没有分离，耦合在一起。如果仅从实现功能的'+
                '角度来说完全ok的，但是从项目开发角度来看还是有不'+
                '少问题，因为实际项目不可能一直只用一款屏或者MCU，'+
                '一旦二者之一发生改变就意味着LCD驱动会改变，而LCD'+
                '应用和驱动又是紧密耦合的，必然会受到影响要做出改变'+
                '。这是不合理的，LCD应用是针对屏幕这个大类而不是具'+
                '体的屏幕对象，比如说我要在屏幕显示一串字符“hello'+
                'world”，对LCD应用层来说是：“我要在这块屏幕（A屏、'+
                'B屏…）显示hello world，但是具体怎么实现显示，我不'+
                '关心，我只要结果”。另外一种情况就是如果一个项目要使'+
                '用两块或者多块屏（虽然实际上这种情况很少见，就我个人'+
                '目前还没遇到过），那是不是要LCD应用代码复制两份甚至'+
                '更多，这明显会增加代码体积，而且看着也别扭。所以LCD框架就呼之欲出了。',
        author:'sys2',        
        userName:'sys2',
        passWord:'111',
        pubulishTime:'2023-11-30 11:00'
    },
    {
        id:3,
        title:'程序员应该怎么忙',
        content:'前几天和一个总监聊了一下程序员的成长问题，也问'+
                '了一个问题：“程序员应该怎么忙才能成为技术专家？”'+
                '首先我认为程序员的成长要分成三个阶段，分别是初'+
                '级程序员、技术专家和资深程序员（架构师/总监/CTO）。'+
                '第一阶段：初级程序员第一个阶段应该算是入门阶段，'+
                '这个时候由于刚刚脱离学校，对于整个社会、专业、公司'+
                '等可能了解的都不是特别的清晰。所以这个阶段适合是做'+
                '一些探索性的事情。在第一阶段里面，我认为投入一定的'+
                '时间是必要的，因为我们不确定我们自己的长板、优势和'+
                '兴趣在哪里，需要不断要去探索试错和寻找到正确的方向。'
                ,
        author:'sys3',        
        userName:'sys3',
        passWord:'111',
        pubulishTime:'2023-11-30 11:00'
    }
    ,
    {
        id:4,
        title:'关于大龄程序员的一些思考',
        content:'我是大龄程序员，86年，36岁，23年要满37岁。'+
                '很多人说程序员过了35岁，要被淘汰，我目前还没有被淘汰，,'+
                '在公司位置还算稳固，从我入职到现在，公司裁员超过25%，'+
                '我在另外的75%之中，可以肯定的说，并非过了35岁就会被淘汰，'+
                '我不是个例，因为我大龄，所以认识很多大龄程序员，'+
                '其中有技术大牛、也有普通螺丝钉，22年的裁员大潮中，有被裁的，'+
                '也有继续在公司发光发热的。有的人会说，这些人肯定是管理层或者有漂'+
                '亮的履历丰富的大厂经验，我认识的这些大多数是我的同事，'+
                '我没有大厂经历，这些同事基本上也没有大厂经历，真是物以类聚啊，同事的经历也没有特别大的差异。'
                ,
        author:'sys4',        
        userName:'sys4',
        passWord:'111',
        pubulishTime:'2023-11-30 11:00'
    }
    ,
    {
        id:5,
        title:'34岁程序员-开年总结',
        content:'一路走来，磕磕绊绊，不觉间已经34岁了。都说对于程序员而言35岁是个坎，'+
                '现在已经走到了坎跟前…… 目前就职于某大厂，身份是“小组长”（没错，就是脉脉上人人喊打的那种O(∩_∩)O~）,'+
                '在这个年纪，不上不下，多少有些尴尬。还是习惯上以农历年来做年度总结，这里说'+
                '的2022年就泛指过去的一个农历年吧。一年下来整体的感受：卷，忙忙碌碌，跌跌宕宕。'+
                '忙碌其实每年都非常忙碌，这没有什么好说的。但今年感觉格外卷，身边人各种卷PPT、卷架构，结果就是带动整体的内卷，'+
                '然而PPT做的更漂亮了、架构更高大上了，，但公司业绩却更糟糕了。再说跌宕，'+
                '看看这一年经历就知道了。'+
                '工作一年来没什么起色，职级无变化，已看淡，“但行好事，莫问前程”吧，哈哈……'+
                '薪资涨了一点点；带的几个人中，有两个成长挺快，倍感欣慰；'
                ,
        author:'sys5',        
        userName:'sys5',
        passWord:'111',
        pubulishTime:'2023-11-30 11:00'
    }
    ,
    {
        id:6,
        title:'你眼中的失业潮是怎样的？',
        content:'逛 V 站刷到一个北漂的码农，他的生存指南直接让我破防，'+
                '但也不得不佩服他的生存能力和心态。先介绍下这位老哥的情,'+
                '况，普通本科非科班，9 年 IOS 开发经验，其中 1 年 RN，一年 flutter。'+
                '北漂，名下无车，老婆和孩子都在北京，目前孩子在读幼儿园。'+
                '上半年已经被优化裁员了，更新简历重新找工作，'+
                '整体情况就是一周打招呼几十次，只成功投了 3 份简历，0 次面试。'+
                '实在不敢想象几个月没工作心态会崩成啥样。虽'+
                '然没有做好心理准备，但也没有别的办法了。'+
                '社保代缴违法了也断缴了，每个月剩下 3k 左右，'
                ,
        author:'sys6',        
        userName:'sys6',
        passWord:'111',
        pubulishTime:'2023-11-30 11:00'
    }
]
//将原始数据存到本地缓存，用于登录时判断
localStorage.setItem('defaultDataArr',JSON.stringify(defaultDataArr));
//将注册的信息通过缓存获取到
let registerData = JSON.parse(localStorage.getItem('registerData'));
if(registerData!=null){
    defaultDataArr.push(registerData)
    //给新注册的用户赋id
    defaultDataArr.forEach(item => {
        if(item.id==null){
            item.id=defaultDataArr.length
        }
    });
    localStorage.clear();
    // console.log(defaultDataArr);
}
var tb = document.getElementById('tb');
var readList = document.getElementById('readList');
var loginBtn = document.getElementsByClassName('loginBtn')[0];
var tempText = window.location.search.split("=")[1];
//清除url的参数
var url = window.location.href;
if (url.indexOf("?") != -1) {
      url = url.replace(/(\?|#)[^'"]*/, '');
      window.history.pushState({}, 0, url);
}
getData();
function getData(){
    //登录后index显示用户名
    if(tempText && tempText!==undefined){
        loginBtn.style.border='none';
        loginBtn.style.background='none';
        loginBtn.style.fontSize='16px';
        loginBtn.innerText=`欢迎您，${tempText}`;
    }
    //遍历文章列表
    getList();
}

//详情页
function detailList(obj){
    localStorage.setItem('data', JSON.stringify(obj));
    window.open(`./XiangQinPage.html`)
}


//跳转登录注册页面
function idxLoginBtn(){
    if(loginBtn.innerText!='登录'){
        if(confirm('确定要切换账号吗？')){
            window.location.href='./loginPage.html';
        }
    }else{
        window.location.href=`./loginPage.html`;
    }
}


var addBox = document.getElementsByClassName('addBox')[0];
var addID = document.getElementsByClassName('addID')[0];
var addTitle = document.getElementsByClassName('addTitle')[0];
var addContent = document.getElementsByClassName('addContent')[0];
var tempId;
//点击写文章跳出模态框
function addText(){
    // addBox.style.display='block';
    if(loginBtn.innerText=='登录'){
        alert('登录账号才能写文章！')
    }else{
        addBox.style.display='block';
    }
    if(tempText!==undefined){
        let tempArr=defaultDataArr.filter((item)=>{
            return item.author==tempText
        })
        if(tempArr.length>0 && tempArr[0]!==null){
            addID.value=tempArr[0].id;
            tempId=tempArr[0].id;
        }
    }

    // console.log(defaultDataArr);
}   
//关闭模态框        
function closeAdd(){
    addBox.style.display='none';
}
//发布文章按钮
function addBtn(){
    let time = new Date();
    let timeYear = time.toString().split(" ")[3];
    let timeMonth = new Date().getMonth() + 1;
    let timeDay = new Date().getDate() ;
    let timeMinute = time.toString().split(" ")[4];
    var nowTime = `${timeYear}-${timeMonth}-${timeDay} ${timeMinute}`;
    let tempArr=defaultDataArr.filter((item)=>{
        return item.id==tempId
    })
    if(tempArr.length>0 && tempArr[0]!==null){
        //同个用户多次发表文章
        if(tempArr[0].title!==null && tempArr[0].content!==null){
            let obj={
                id:tempArr[0].id,
                title:addTitle.value,
                content:addContent.value,
                author:tempArr[0].author,
                pubulishTime:nowTime
            }
            defaultDataArr.push(obj)
        }else{
            //当前用户发布文章
            for(let i=0; i<defaultDataArr.length;i++){
                if(defaultDataArr[i].id == tempArr[0].id){
                    defaultDataArr[i].title=addTitle.value;
                    defaultDataArr[i].content=addContent.value;
                    defaultDataArr[i].author=tempText;
                    defaultDataArr[i].pubulishTime=nowTime;
                }
            }
        }
        // 获取标签下的所有子节点 新增数据重新遍历
        let tbChildNodes = tb.childNodes;
        let readListNodes = readList.childNodes;
        for (let i = tbChildNodes.length - 1; i >= 0; i--) { 
            tb.removeChild(tbChildNodes[i]);
        }
        for (let j = readListNodes.length - 1; j >= 0; j--) { 
            readList.removeChild(readListNodes[j]);
        }
        let h3 = document.createElement('h3');
        h3.innerText='48小时阅读排行';
        readList.appendChild(h3);
        getList();//重新遍历
    }
    addTitle.value='';
    addContent.value='';
    addBox.style.display='none';
    console.log('add',defaultDataArr);
}
//遍历数据
function getList(){
    //数组中的数据遍历并创建节点
    for (let i = 0; i < defaultDataArr.length; i++) {
        //判断新注册的用户 不遍历数据（因为没发表文章...）
        if(defaultDataArr[i].title==null && defaultDataArr[i].content==null){

        }else{
            var tr = document.createElement('tr');
            tb.appendChild(tr);
           
            var td = document.createElement('td');
            tr.appendChild(td);

            var contentImg=document.createElement('img');
            contentImg.className='tdLeft';
            contentImg.src=`./images/tdP${i}.png`
            td.appendChild(contentImg);

            var a = document.createElement('a');
            td.appendChild(a);

            var contentSpan = document.createElement('span');
            td.appendChild(contentSpan);

            var authorSpan = document.createElement('span');
            td.appendChild(authorSpan);

            var timeSpan = document.createElement('span');
            td.appendChild(timeSpan);

            var zanImg = document.createElement('img');
            zanImg.className='zanImg';
            zanImg.src='./images/点赞.png';
            td.appendChild(zanImg);

            var zanSpan = document.createElement('span');
            zanSpan.className='zanSpan';
            zanSpan.innerText='16';
            td.appendChild(zanSpan);

            var readImg = document.createElement('img');
            readImg.className='readImg';
            readImg.src='./images/浏览.png';
            td.appendChild(readImg);

            var readSpan = document.createElement('span');
            readSpan.className='readSpan';
            readSpan.innerText='99+';
            td.appendChild(readSpan);

            //对文章字段进行赋值
            a.innerText=defaultDataArr[i].title;
            contentSpan.innerText=defaultDataArr[i].content;
            contentSpan.className='contentSpan'
            authorSpan.innerText='作者: '+defaultDataArr[i].author;
            authorSpan.className='authorSpan'
            timeSpan.innerText=defaultDataArr[i].pubulishTime;
            timeSpan.className='timeSpan'

            //阅读排行榜赋值
            var listTitle = document.createElement('a');
            listTitle.style.fontSize='15px';
            readList.appendChild(listTitle);
            const brLine = document.createElement('br');
            readList.appendChild(brLine);
            listTitle.className='listTitle';
            listTitle.innerHTML=`${i+1}&nbsp;&nbsp;&nbsp;${defaultDataArr[i].title}`;
        }
            //点击文章 将obj存储到本地缓存
            //首页
            a.addEventListener("click", function(){
                detailList(defaultDataArr[i])
            })
            //阅读排行
            listTitle.addEventListener("click", function(){
                detailList(defaultDataArr[i]) 
            })
    }
    tb.appendChild(tr);
}